package com.banyechan.lingo_words.exception;

import lombok.Getter;

/**
 * 业务异常类
 *
 * @author Jax
 */
@Getter
public class BusinessException extends RuntimeException {

    private final Integer code;

    private Object[] params;

    public BusinessException(Integer code , String msg) {
        super(msg);
        this.code = code;
    }

    public BusinessException(String msg) {
        super(msg);
        this.code = 999999;
    }

    public BusinessException(BusinessExceptionEnum exceptionEnum) {
        super(exceptionEnum.getMsg());
        this.code = exceptionEnum.getCode();
    }

    public BusinessException(BusinessExceptionEnum exceptionEnum, Object... params) {
        super(getMsg(exceptionEnum, params));
        this.code = exceptionEnum.getCode();
        this.params = params;
    }

    private static String getMsg(BusinessExceptionEnum exceptionEnum, Object... params) {
        String msg = exceptionEnum.getMsg();
        if (params != null && params.length > 0) {
            return String.format(msg, params);
        }
        return msg;
    }
}
